package cin.ufpe.br.projetoESS.Dados;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import cin.ufpe.br.projetoESS.Entidades.Classificado;
import cin.ufpe.br.projetoESS.Entidades.Relatorios.DadosFinanceiros;

public class RepositorioClassificado {


	private Connection conn;

	public RepositorioClassificado(Connection conn)
	{
		this.conn = conn;		
	}


	public void inserirClassificado(Classificado c) throws SQLException
	{
		Statement statement = conn.createStatement();


		String queryInsertClassificado = "INSERT INTO CLASSIFICADO (codigoclassificado,nomeanunciante,telefoneanunciante,emailanunciante,categoriaproduto,textoanuncio,pagamentoclassificado,validadeclassificado)"
			+ "VALUES(CLASSIFICADO_SEQ.NEXTVAL,'"
			+ c.getNomeAnunciante() + "'," +
			+ c.getTelefoneAnunciante() + ",'"
			+ c.getEmailAnunciante() + "','"
			+ c.getCategoriaProduto() + "','"
			+ c.getTextoAnuncio() + "',"
			+ c.getPagamentoClassificado() + ","
			+ "TO_DATE('" + c.getValidadeClassificado() + "','DD/MM/YYYY'))";

		System.out.println(queryInsertClassificado);
		statement.executeUpdate(queryInsertClassificado);
		conn.commit();		
	}
	
	public Classificado[] getDadosClassificadosAtivos() throws SQLException{

		Statement statement = conn.createStatement();		
		ResultSet resultSet;

		int qtdClassificadosAtivos = 0;		
		Classificado[] classificadosAtivos = null;

		String queryQtdClassificadosAtivos = "SELECT COUNT(*) AS qtdAtivos FROM Classificado WHERE validadeClassificado >= SYSDATE";
		resultSet = statement.executeQuery(queryQtdClassificadosAtivos);

		resultSet.next();

		qtdClassificadosAtivos = resultSet.getInt("qtdAtivos");

		if(qtdClassificadosAtivos > 0){

			classificadosAtivos = new Classificado[qtdClassificadosAtivos];

			String queryClassificadosAtivos = "SELECT a.*, TO_CHAR(a.validadeClassificado) AS validClassificado FROM Classificado a " +
											"WHERE validadeClassificado >= SYSDATE";
			
			resultSet = statement.executeQuery(queryClassificadosAtivos);

			for(int i = 0; i < qtdClassificadosAtivos; i++){	
				if(resultSet.next()){

					String nomeAnunciante = resultSet.getString("nomeAnunciante");
					int telefoneAnunciante = resultSet.getInt("telefoneAnunciante");
					String emailAnunciante = resultSet.getString("emailAnunciante");
					String categoriaProduto = resultSet.getString("categoriaProduto");
					String textoAnuncio = resultSet.getString("textoAnuncio");
					double pagamentoClassificado = resultSet.getDouble("pagamentoClassificado");
					String validadeClassificado = resultSet.getString("validClassificado");

					classificadosAtivos[i] = new Classificado(nomeAnunciante, telefoneAnunciante, emailAnunciante, categoriaProduto, textoAnuncio, pagamentoClassificado, validadeClassificado);
				}
			}			
		}

		return classificadosAtivos;
	}

	public DadosFinanceiros[] getDadosGanhosClassificados() throws SQLException{

		DadosFinanceiros[] dadosFinanceiros = null;
		Classificado[] classificadosAtivos = this.getDadosClassificadosAtivos();

		if(classificadosAtivos != null){
			dadosFinanceiros = new DadosFinanceiros[classificadosAtivos.length];

			for(int i = 0; i < dadosFinanceiros.length; i++){
				dadosFinanceiros[i] = new DadosFinanceiros(classificadosAtivos[i].getNomeAnunciante(), classificadosAtivos[i].getPagamentoClassificado());
			}			
		}

		return dadosFinanceiros;

	}
}
